In the field of video coding, video images or frames can be coded into wavelet coefficients. Such wavelet encoding can offer good coding efficiency. Traditional approaches to wavelet coding involve applying a 1-dimensional (1-D) wavelet transformation to a video image to decompose the image data into the coefficients that represent the video image. The decomposing process is often referred to as lifting. The wavelet coefficients can be used by a video receiver to easily reconstruct the video image. Unfortunately, traditional approaches to wavelet coding have drawbacks, particularly with respect to motion video coding.
Some video coding standards, such as MPEG-4, employ motion compensation. Generally, motion compensation involves creating motion vectors that indicate how areas (called macroblocks) of frames in motion video move from one frame to another frame. By using motion vectors, redundancy between frames can be exploited to increase video compression. Using motion vector information, the video receiver can determine where pixels move from one frame to the next.
One problem that can arise when applying wavelet coding to motion compensated video is called over-complete wavelet compensation. Over-complete wavelet compensation occurs when motion vectors collide due to contractive motion. When motion vectors collide, multiple pixels in one frame may be mapped to one pixel in a subsequent frame. FIG. 1 is a graphical illustration 100 depicting over-complete wavelet compensation. 1-dimensional pixel arrays 102 are shown in a sequence of temporally-related frames 104. As shown, three motion vectors 106a, 106b, and 106c converge on a single pixel 108 in frame F2. One possible solution to colliding motion vectors is to remove all but one of the colliding vectors. In FIG. 1, removal of motion vectors 106a and 106c is illustrated with an ‘X’ 110 over motion vector 106a and an ‘X’ 112 over motion vector 106c. However, this solution results in significant reduction of coding efficiency due to the wavelet boundary effect.
Another problem that can occur when wavelet coding motion video relates to fractional pixel (or sub-pixel) precision. Traditionally, when a motion vector indicates that a pixel of one frame has moved between two pixel positions of a subsequent frame, the pixel position is set to one or the other of the two pixel positions in the subsequent frame. In other words, the fractional pixel position motion vector is forced to an integer pixel position. Inaccuracy related to fractional pixels is illustrated in FIG. 1. A motion vector 114 (shown with a dotted line) originally points between two pixel position 116 and pixel position 118. The motion vector 114 is adjusted to a new motion vector 120 that points to pixel position 116. If, in forcing a sub-pixel to an integer pixel position, over-complete wavelet compensation occurs, the sub-pixel may be forced to a different, less accurate integer pixel position. As a result, coding accuracy and efficiency may be reduced.
Accordingly, although wavelet coding of images can be beneficial to improve coding efficiency, traditional approaches to wavelet coding has certain drawbacks when applied to motion video.